<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue 自定义事件</title>
</head>
<body>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <script>
    // Vue自定义事件
    let vm = new Vue()
    // 分析内部工作原理：
    // $on 仅仅就是注册事件，并没有执行，而且会注册多个事件，需要一个变量来存储
    // 存储事件时需要记录所有事件的名称和以及对应的处理函数，就是键值对的形式
    // 对象的结构：{ 'click': [fn1, fn2], 'change': [fn]}

    // $emit里有一个参数，里面是参数的名称，在对象里面找对应属性，获取到对应的事件处理函数

    // 注册事件（订阅消息）
    vm.$on('dataChange', () => {
      console.log('dataChange')
    })
    vm.$on('dataChange', () => {
      console.log('dataChange1')
    })

    // 触发事件（发布消息）
    vm.$emit('dataChange')
  </script>
</body>
</html>